console.log(100); //1
setTimeout(() => {
  console.log(200);//4
});
Promise.resolve().then(() => {
  console.log(300); //3
})
console.log(400); //2

// 宏任务： setTimeout setInterval ajax DOM事件 ，dom渲染后触发 
// 1 call stack 清空 2 尝试dom渲染 3 触发event loop
// 微任务： promise async await ，dom渲染钱触发
// 1 call stack 清空 2 执行当前的微任务 3 尝试dom渲染 4 触发event loop
// 相同定时下，微任务执行比宏任务早

// new Promise时 ，传入的函数会被立即执行
